﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QLVatTu.Class;

namespace QLVatTu.HeThong
{
    public partial class frmNguoiDung : Form
    {
        public frmNguoiDung()
        {
            InitializeComponent();
        }

        KetNoiDB cn = new KetNoiDB();
        private string tag = "";

        private void load_grid()
        {
            string sql = "select row_number() over(order by MaNguoiDung) as STT, tbl_NguoiDung.MaNguoiDung, tbl_NguoiDung.TenNguoiDung, tbl_NguoiDung.TenDangNhap, tbl_NguoiDung.MatKhau, tbl_NguoiDung.MaQuyenHan , tbl_NguoiDung.MaNhanVien , tbl_QuyenHan.TenQuyenHan FROM tbl_QuyenHan INNER JOIN tbl_NguoiDung ON tbl_QuyenHan.MaQuyenHan = tbl_NguoiDung.MaQuyenHan";
            DataTable tbl = new DataTable();
            if (cn.KetNoi())
            {
                tbl = cn.getTable(sql);
                dtgNguoiDung.DataSource = tbl;
            }
        }
        private void frmnguoiDung_Load(object sender, EventArgs e)
        {
            txtTenDangNhap.Text = HangSo.MaQuyenHan;
            if (cn.KetNoi())
            {
                load_grid();
                load_button(tag);

                cmbQuyenHan.DataSource = cn.getTable("SELECT * FROM tbl_QuyenHan ORDER BY MaQuyenHan DESC");
                cmbQuyenHan.DisplayMember = "TenQuyenHan";
                cmbQuyenHan.ValueMember = "MaQuyenHan";

                cbbNhanVien.DataSource = cn.getTable("SELECT * FROM tbl_NhanVien");
                cbbNhanVien.DisplayMember = "TenNhanVien";
                cbbNhanVien.ValueMember = "MaNhanVien";
            }
            else
            {
                MessageBox.Show("Kết nối CSDL thất bại!");
                this.Close();
            }
        }

        private void load_button(string tag)
        {
            if (tag == "them")
            {
                btnThem.Enabled = false;
                btnSua.Enabled = false;
                btnXoa.Enabled = false;

                btnLuu.Enabled = true;
                btnHuy.Enabled = true;

                txtMaNguoiDung.Enabled = false;
                cbbNhanVien.Enabled = true;
                txtTenDangNhap.Text = "";
                txtTenDangNhap.Enabled = true;
                txtMatKhau.Text = "";
                txtMatKhau.Enabled = true;
                cmbQuyenHan.Enabled = true;
            }
            else if (tag == "sua")
            {
                btnThem.Enabled = false;
                btnSua.Enabled = false;
                btnXoa.Enabled = false;

                btnLuu.Enabled = true;
                btnHuy.Enabled = true;

                txtMaNguoiDung.Enabled = false;
                cbbNhanVien.Enabled = false;
                txtTenDangNhap.Enabled = true;
                txtMatKhau.Enabled = true;
                cmbQuyenHan.Enabled = true;
            }
            else
            {
                btnThem.Enabled = true;
                btnSua.Enabled = true;
                btnXoa.Enabled = true;

                btnLuu.Enabled = false;
                btnHuy.Enabled = false;

                txtMaNguoiDung.Enabled = false;
                cbbNhanVien.Enabled = false;
                txtTenDangNhap.Enabled = false;
                txtMatKhau.Enabled = false;
                cmbQuyenHan.Enabled = false;
            }
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            tag = "them";
            load_button(tag);
            txtMaNguoiDung.Text = cn.SinhMa("MaNguoiDung", "tbl_NguoiDung", "ND");
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            tag = "sua";
            load_button(tag);
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            if (dtgNguoiDung.RowCount > 0)
            {
                DialogResult msg = MessageBox.Show("Bạn có chắc chắn muốn xóa không", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (msg == DialogResult.Yes)
                {
                    if (dtgNguoiDung.CurrentRow.Cells["MaQuyenHan"].Value.ToString() == "QH001" || txtMaNguoiDung.Text == "ND001")
                    {
                        MessageBox.Show("Không thể xóa người dùng này");
                    }
                    else
                    {
                        cn.Delete_Table("tbl_NguoiDung", "MaNguoiDung = '" + txtMaNguoiDung.Text + "'");
                        MessageBox.Show("Đã xóa thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    load_grid();
                    load_button("");
                }
            }
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            string MaNguoiDung = txtMaNguoiDung.Text;
            string TenNguoiDung = cbbNhanVien.Text.Trim();
            string TenDangNhap = txtTenDangNhap.Text.Trim();
            string MatKhau = txtMatKhau.Text.Trim();
            string MaQuyenHan = "";
            string MaNhanVien = "";

            if (cbbNhanVien.SelectedValue == null)
            {
                MessageBox.Show("Bạn chưa chọn nhân viên", " Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            else if (TenDangNhap == "")
            {
                MessageBox.Show("Bạn chưa nhập tên đăng nhập ", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtTenDangNhap.Focus();
                return;
            }
            else if (MatKhau == "")
            {
                MessageBox.Show("Bạn chưa nhập mật khẩu", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtMatKhau.Focus();
                return;
            }
            else if (cmbQuyenHan.SelectedValue == null)
            {
                MessageBox.Show("Bạn chưa chọn quyền hạn", " Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            MaNhanVien = cbbNhanVien.SelectedValue.ToString();
            MaQuyenHan = cmbQuyenHan.SelectedValue.ToString();

            if (tag == "them")
            {
                string checkMaNhanVien = cn.LayDuLieu("select MaNhanVien from tbl_NguoiDung where MaNhanVien = '" + MaNhanVien + "'");
                if (checkMaNhanVien != "")
                {
                    MessageBox.Show("Nhân viên đã được cấp tài khoản", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    cbbNhanVien.Focus();
                    return;
                }

                string checkTenDangNhap = cn.LayDuLieu("select TenDangNhap from tbl_NguoiDung where LOWER(TenDangNhap) = N'" + TenDangNhap.ToLower() + "'");
                if (checkTenDangNhap != "")
                {
                    MessageBox.Show("Tên đăng nhập đã tồn tại", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    txtTenDangNhap.Focus();
                    return;
                }

                cn.Insert_Table("tbl_NguoiDung", " MaNguoiDung, TenNguoiDung, TenDangNhap, MatKhau, MaQuyenHan, MaNhanVien", "'" + MaNguoiDung +
                    "',N'" + TenNguoiDung + "',N'" + TenDangNhap + "','" + MatKhau + "','" + MaQuyenHan + "','" + MaNhanVien +
                    "'");
                load_grid();
                load_button("");
                MessageBox.Show("Thêm mới thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                HangSo.Luu_Hanh_Dong(HangSo.TenDangNhap, HangSo.TenQuyenHan, HangSo.TenNguoiDung, "Thêm người dùng mới.");
            }
            else
            {
                string checkTenDangNhap = cn.LayDuLieu("select TenDangNhap from tbl_NguoiDung where LOWER(TenDangNhap) = N'" + TenDangNhap.ToLower() + "' AND MaNguoiDung!='" + MaNguoiDung + "'");
                if (checkTenDangNhap != "")
                {
                    MessageBox.Show("Tên đăng nhập đã tồn tại", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    txtTenDangNhap.Focus();
                    return;
                }

                cn.Update_Table("tbl_NguoiDung", "TenDangNhap = N'" + TenDangNhap +
                                "', MatKhau = '" + MatKhau +
                                "', TenNguoiDung = N'" + TenNguoiDung +
                                "', MaQuyenHan = '" + MaQuyenHan +
                                "'", "MaNguoiDung = '" + MaNguoiDung + "' AND MaNhanVien='" + MaNhanVien + "'");
                load_grid();
                load_button("");
                HangSo.Luu_Hanh_Dong(HangSo.TenDangNhap, HangSo.TenQuyenHan, HangSo.TenNguoiDung, "Sửa thông tin người dùng.");
            }
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            tag = "";
            load_button(tag);
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            if (this.TopLevel == false) this.Parent.Parent.Controls.Remove(this.Parent);
            else this.Close();
        }

        private void dtgNguoiDung_SelectionChanged(object sender, EventArgs e)
        {
            if (dtgNguoiDung.SelectedRows.Count > 0)
            {
                txtMaNguoiDung.Text = dtgNguoiDung.CurrentRow.Cells["MaNguoiDung"].Value.ToString();
                cbbNhanVien.SelectedValue = dtgNguoiDung.CurrentRow.Cells["MaNhanVienDGV"].Value.ToString();
                txtTenDangNhap.Text = dtgNguoiDung.CurrentRow.Cells["TenDangNhap"].Value.ToString();
                txtMatKhau.Text = dtgNguoiDung.CurrentRow.Cells["MatKhau"].Value.ToString();
                cmbQuyenHan.SelectedValue = dtgNguoiDung.CurrentRow.Cells["MaQuyenHan"].Value.ToString();
            }
        }
    }
}
